// pages/editor/editor.js

//获取app实例
const app = getApp()

Page({

    /**
     * 页面的初始数据
     */
    data: {

    },

    //设置当刷新后，富文本编辑器中的内容呈现上次缓存下来的内容
    cachetimer: null,
    cacheval: null,
    cacheContent: function (d) {
        // console.log(d)
        this.cacheval = d.detail
        if (this.cachetimer) {
            return
        }
        // cachetimer 保存的是每一次的setTimeout的id值
        this.cachetimer = setTimeout(() => {
            console.log(this.cacheval.html)
            // console.log(this.cachetimer)
            this.cachetimer = null

            wx.setStorageSync('cache-content', this.cacheval.html)
        }, 1000)

    },

    checkAndSetContent: function () {
        let content = wx.getStorageSync('cache-content')
        // 初始化编辑器内容
        content && this.editor.setContents({
            html: content,
            sucess: () => {
                console.log('ok')
            },
            fail: err => {
                console.log(err)
            }
        })
    },
    /**
     * 生命周期函数--监听页面加载
     */

    editor: null,
    onLoad: function () {
        let query = wx.createSelectorQuery()

        // query.select('#editor').context(res=>{
        //   res.context.insertImage({
        //     src:'http://wy.vvh5.com:4321/randimg'
        //   })
        // }).exec()

        query.select('#editor').context(res => {
            // 保存实例
            this.editor = res.context

            //原来编辑的东西不丢失
            this.checkAndSetContent()
        }).exec()
    },
    Undo: function () {
        this.editor.undo()
    },
    Redo: function () {
        this.editor.redo()
    },
    // 存在回调地狱问题
    // SelectImage:function(){
    //   wx.chooseImage({
    //     count: 1,
    //     sizeType:['original'],
    //     success:res=>{
    //       // this.editor.insertImage({
    //       //   src:res.tempFilePaths[0]
    //       // })

    //       /////网络请求图片
    //       wx.uploadFile({
    //         //文件路径
    //         filePath: res.tempFilePaths[0],
    //         // 文件上传名字，给后端服务器用
    //         name: 'image',
    //         url: 'http://wy.vvh5.com:4321/image/2019012531',
    //         // 告诉是文本，不用解析
    //         dataType:'text',
    //         success: r=>{
    //           //用状态码判断错误状态，进行处理
    //           if(r.statusCode>=400){
    //             // 显示模态对话框
    //             wx.showModal({
    //               // title必须是字符串类型，所以将得到的数字格式化一下
    //               title:`${r.statusCode}`,
    //               content:r.data
    //             })
    //             return 
    //           }
    //           this.editor.insertImage({
    //             src:`http://wy.vvh5.com:4321/image/2019012531/${r.data}`
    //           })
    //         }
    //       })

    //     }
    //   })
    // },

    //用promise解决上述回调地狱问题
    // SelectImage: async function(){
    //   let res=await new Promise((rv,rj) => {
    //     wx.chooseImage({
    //       count: 1,
    //       sizeType:['original'],
    //       success: res=>{
    //         rv(res)
    //       },
    //       fail:err=>{
    //         rj(err)
    //       }
    //     })
    //   })
    //   let ret = await new Promise((rv,rj)=>{
    //     wx.uploadFile({
    //       //文件路径
    //       filePath: res.tempFilePaths[0],
    //      // 文件上传名字，给后端服务器用
    //       name: 'image',
    //       url: 'http://wy.vvh5.com:4321/image/2019012531',
    //       // 告诉是文本，不用解析
    //       dataType:'text',
    //       success: r=>{
    //         rv(r)
    //       },
    //       fail:err=>{
    //         rj(err)
    //       }
    //     })
    //   })
    //   if(ret.statusCode>=400){
    //       wx.showModal({
    //         itle:`${ret.statusCode}`,
    //             content:ret.data
    //       })
    //       return 
    //   }
    //   this.editor.insertImage({
    //       src:`http://wy.vvh5.com:4321/image/2019012531/${ret.data}`
    //   })
    // },

    //上述的域名是死的，想变成变量可以随意改域名
    SelectImage: async function () {
        let res = await new Promise((rv, rj) => {
            wx.chooseImage({
                count: 1,
                sizeType: ['original'],
                success: res => {
                    rv(res)
                },
                fail: err => {
                    rj(err)
                }
            })
        })
        let ret = await new Promise((rv, rj) => {
            wx.uploadFile({
                //文件路径
                filePath: res.tempFilePaths[0],
                // 文件上传名字，给后端服务器用
                name: 'image',
                url: `${app.globalData.url}/image/2019012531`,
                // 告诉是文本，不用解析
                dataType: 'text',
                success: r => {
                    rv(r)
                },
                fail: err => {
                    rj(err)
                }
            })
        })
        if (ret.statusCode >= 400) {
            wx.showModal({
                title: `${ret.statusCode}`,
                content: ret.data
            })
            return
        }
        this.editor.insertImage({
            src: `${app.globalData.url}/image/2019012531/${ret.data}`
        })
    },

    editorPost: function (f) {
        let {
            title
        } = f.detail.value

        this.editor.getContents({
            success: res => {
                wx.setStorageSync('editorContent', {
                    title,
                    content: res.html
                })

                // 缓存内容，跳转到preview页面
                wx.navigateTo({
                    url: '/pages/preview/preview',
                })
            }
        })

        //提交成功后，清空缓存，下次打开页面不再展示上次内容

    },
    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },


})